using System.Xml;
using VSLangProj80;

namespace Hmg.Tools.AssemblyReferences
{
    /// <summary>
    /// Information about one assembly reference
    /// </summary>
    internal class AssemblyReferenceInformation
    {
        #region Private Members
        /// <summary>
        /// Reference to the assembly (visual studio api)
        /// </summary>
        private Reference3 _assemblyReference;

        /// <summary>
        /// Reference to the assembly in the project file
        /// </summary>
        private XmlNode _projectFileReferenceNode;

        /// <summary>
        /// project document
        /// </summary>
        private XmlDocumentHolder _documentHolder;

        /// <summary>
        /// 
        /// </summary>
        private XmlNamespaceManager _xmlNamespaceManager;
        #endregion

        #region Constructor
        /// <summary>
        /// Initializes a new instance of the <see cref="AssemblyReferenceInformation"/> class.
        /// </summary>
        /// <param name="assemblyReference">The assembly reference.</param>
        /// <param name="documentHolder">The document holder.</param>
        /// <param name="xmlNamespaceManager">The XML namespace manager.</param>
        /// <param name="projectFileReferenceNode">The project file reference node.</param>
        public AssemblyReferenceInformation(Reference3 assemblyReference, XmlDocumentHolder documentHolder, XmlNamespaceManager xmlNamespaceManager, XmlNode projectFileReferenceNode)
        {
            _assemblyReference = assemblyReference;
            _documentHolder = documentHolder;
            _projectFileReferenceNode = projectFileReferenceNode;
            _xmlNamespaceManager = xmlNamespaceManager;
        }
        #endregion

        #region Properties
        /// <summary>
        /// Reference to the assembly (visual studio api)
        /// </summary>
        public Reference3 AssemblyReference
        {
            get { return _assemblyReference; }
        }

        /// <summary>
        /// Reference to the assembly in the project file
        /// </summary>
        public XmlNode ProjectFileReferenceNode
        {
            get { return _projectFileReferenceNode; }
        }

        /// <summary>
        /// project document
        /// </summary>
        /// <value>The document holder.</value>
        public XmlDocumentHolder DocumentHolder
        {
            get { return _documentHolder; }
        }

        /// <summary>
        /// Gets the XML namespace manager.
        /// </summary>
        /// <value>The XML namespace manager.</value>
        public XmlNamespaceManager XmlNamespaceManager
        {
            get { return _xmlNamespaceManager; }
        }

        #endregion
    }
}
